let angle;
let hueOffset = 0;

function setup() {
    createCanvas(800, 600);
    angle = PI / 4;
    strokeWeight(2);
    colorMode(HSB, 360, 100, 100);
}

function draw() {
    background(240, 10, 10);  // 深色背景
    translate(width/2, height);
    hueOffset = (hueOffset + 0.5) % 360;  // 随时间缓慢改变色相
    branch(120, 0);
}

function branch(len, depth) {
    // 使用HSB颜色模式创建彩虹渐变效果
    let hue = (hueOffset + depth * 25) % 360;  // 每个深度层次的色相差异
    let saturation = map(depth, 0, 10, 100, 80);  // 饱和度随深度略微降低
    let brightness = map(depth, 0, 10, 100, 70);  // 亮度随深度降低
    stroke(hue, saturation, brightness);
    
    // 绘制当前枝干
    line(0, 0, 0, -len);
    translate(0, -len);
    
    if (len > 4) {
        // 左侧分支
        push();
        rotate(angle);
        branch(len * 0.67, depth + 1);
        pop();
        
        // 右侧分支
        push();
        rotate(-angle);
        branch(len * 0.67, depth + 1);
        pop();
    }
}

function mouseMoved() {
    angle = map(mouseX, 0, width, 0, PI/2);
}